//创建线程计算1+2+3+...+1000，使用Callable版本  思路
/*
* 1.创建一个匿名内部类，实现Callable接口，Callable带有泛型参数。泛型参数表示返回值类型
*2.重写Callable的call方法，完成累加的过程，直接通过返回值计算结果
*3.把callable实例使用FutureTask包装一下
* 4.创建线程，线程的构造方法传入FutureTask，此时新线程就会执行FutureTask内部的Callable的call方法，
*完成计算，计算结果就放到FutureTest对象中
*5.在主线程中调用futuerTest.get()能够阻塞等待新线程重新计算完毕，并获取到FutureTask中的结果
* */


import java.util.concurrent.Callable;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.FutureTask;
import java.util.concurrent.TimeUnit;

public class Demo_1101_Callable {
    public static void main(String[] args) throws InterruptedException, ExecutionException {
        Callable<Integer> callable = new Callable() {
            @Override
            public Integer call() throws Exception {
                int sum=0;
                for (int i=1;i<=1000;i++){
                    sum+=i;
                }
                return sum;
            }
        };
        FutureTask<Integer> futureTask = new FutureTask<>(callable);
        Thread t = new Thread(futureTask);
        t.start();
        int result = futureTask.get();
        System.out.println(result);
    }
}
